import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class demo2 {
    public static List<Integer> func(int num) {
        String s = String.valueOf(Math.sqrt(num));
        int index = s.indexOf(".");
        String ss = s.substring(0, index);
        int temp = Integer.parseInt(ss);
        List<Integer> lst = new ArrayList<>();
        for (int i = 2; i <= temp; i++) {
            if (num % i == 0) {
                lst.add(i);
                lst.add(num/i);
            }
        }
        return lst;
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        String[] nums = s.split(" ");
        int num1 = Integer.parseInt(nums[0]);
        int num2 = Integer.parseInt(nums[1]);
        int[] dp = new int[num2 + 1];
        for (int i = num1 + 1; i < dp.length; i++) {
            dp[i] = Integer.MAX_VALUE;
        }
        int i = num1;
        for (; i <= num2; i++) {
            List<Integer> lst = func(i);
            if (dp[i] != Integer.MAX_VALUE) {
                for (int j = 0; j < lst.size(); j++) {
                    if (i + lst.get(j) <= num2) {
                        dp[i + lst.get(j)] = Math.min(dp[i] + 1, dp[i + lst.get(j)]);
                    } else {
                        break;
                    }
                }
            } else {
                dp[i] = -1;
            }
        }
        System.out.println(dp[num2]);
    }
}


